package com.xuebusi.toutiao.admin.api.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuebusi.toutiao.admin.api.article.entity.ArticleEntity;
import com.xuebusi.toutiao.admin.api.article.vo.*;
import com.xuebusi.toutiao.admin.api.common.result.ApiResult;
import com.xuebusi.toutiao.admin.api.common.result.PageInfo;
import org.springframework.http.ResponseEntity;

/**
 * 文章服务接口
 */
public interface ArticleService extends IService<ArticleEntity> {
    /**
     * 创建文章
     *
     * @param userId    用户id
     * @param draft     是否草稿
     * @param createPVO 文章表单
     * @return
     */
    ResponseEntity<ApiResult<ArticleCreateRVO>> createArticle(Integer userId, Boolean draft, ArticleCreatePVO createPVO);

    /**
     * 修改文章
     *
     * @param userId    用户id
     * @param articleId 文章id
     * @param draft     是否草稿
     * @param updatePVO 修改表单
     * @return
     */
    ResponseEntity<ApiResult<ArticleCreateRVO>> updateArticle(
            Integer userId, Integer articleId, Boolean draft, ArticleUpdatePVO updatePVO);

    /**
     * 查询文章详情
     *
     * @param articleId 文章id
     * @return
     */
    ResponseEntity<ApiResult<ArticleDetailVO>> getArticle(Integer articleId);

    /**
     * 分页查询文章列表
     *
     * @param queryPVO 查询条件
     * @return
     */
    ResponseEntity<ApiResult<PageInfo<ArticlePageRVO>>> pageList(ArticleQueryPVO queryPVO);

    /**
     * 删除文章
     *
     * @param userId    用户id
     * @param articleId 文章id
     * @return
     */
    ResponseEntity delete(Integer userId, Integer articleId);

    /**
     * 搜索文章
     *
     * @param searchPVO 搜索参数
     * @return
     */
    ResponseEntity<ApiResult<PageInfo<ArticleSearchRVO>>> search(ArticleSearchPVO searchPVO);

    /**
     * 修改评论状态
     *
     * @param article_id    文章id
     * @param allow_comment 是否允许评论
     * @return
     */
    ResponseEntity<ApiResult<ArtCommentStatusRVO>> updateCommentStatus(Integer article_id, Boolean allow_comment);
}
